/**
//给定两个排序后的数组 A 和 B，其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法，将 B 合并入 A 并排序。 
//
// 初始化 A 和 B 的元素数量分别为 m 和 n。 
//
// 示例: 
//
// 输入:
//A = [1,2,3,0,0,0], m = 3
//B = [2,5,6],       n = 3
//
//输出: [1,2,2,3,5,6] 
//
// 说明: 
//
// 
// A.length == n + m 
// 
// Related Topics 数组 双指针 排序 👍 141 👎 0

*/

package com.xixi.basicAlgroithms.sort;
public class ID_interview_10_01_SortedMergeLcci {
    public static void main(String[] args) {
        Solution solution = new ID_interview_10_01_SortedMergeLcci().new Solution();
        solution.merge(new int[1], 0, new int[]{1}, 1);

    }


    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        public void merge(int[] A, int m, int[] B, int n) {



        int i = m -1 , j =n -1, index = m+n -1;
        while(index >=0 && j >=0){
            if( i >=0 && B[j] < A[i]   ){ //如果A数组还有没遍历完的，就可以放A
                A[index] = A[i];
                --i;
            }else if(i<0 || B[j] >= A[i]){ //如果A数组都遍历完了，或者B大于A，就可以放B
                A[index] = B[j];
                --j;
            }
            --index;
        }

    }
}
//leetcode submit region end(Prohibit modification and deletion)




}